Storage device and stream filtering method thereof

ABSTRACT

A storage device may include a main storage part including memories; and a controller configured to control an overall operation of the main storage part. The controller includes a filter manager configured to store data format information and a filtering condition provided from a host; stream filters configured to search and project data stored in the memories in parallel in response to a control of the filter manager to produce searched and projected data; and a merge filter configured to merge the searched and projected data of the stream filters in response to the control of the filter manager.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefits, under 35 U.S.C. §119, of KoreanPatent Application No. 10-2010-0084969 filed Aug. 31, 2010, the entiretyof which is incorporated by reference herein.

BACKGROUND

1. Field

Exemplary embodiments relate to a data storage device. Moreparticularly, embodiments relate to a semiconductor memory-based storagedevice and a stream filtering method thereof

2. Description of the Related Art

Semiconductor memory devices may be divided into volatile semiconductormemory devices and non-volatile semiconductor memory devices. Volatilesemiconductor memory devices may perform read and write operations at ahigh speed, but lose stored contents at power-off On the other hand,non-volatile semiconductor memory devices may retain stored contentseven at power-off Non-volatile semiconductor memory devices may be usedas memory. The memory stores contents that will be maintained regardlessof whether power is supplied.

Non-volatile semiconductor memory devices may include a mask read-onlymemory (MROM), a programmable read-only memory (PROM), an erasableprogrammable ROM (EPROM), an electrically erasable programmable ROM(EEPROM), etc.

Among non-volatile semiconductor memory devices, flash memory may bewidely used as an audio and image data storing media of user devices,i.e., a computer, a cellular phone, PDA, a digital camera, a camcorder,a voice recorder, an MP3 player, a handheld PC, a game machine, afacsimile, a scanner, a printer, etc. Hereinafter, user devices will becalled hosts.

Flash memory, for example, can be formed to have a removable card type,i.e., a multimedia card, a security digital card, a smart media card, acompact flash card, etc. Flash memory can be included as main storagedevice within an USB memory, a solid state drive (SSD), etc. Storagedevices including flash memory may be inserted or detached in or fromhost according to a user request.

SUMMARY

Embodiments are directed to data storage devices.

One embodiment may be directed to a stream filtering method of a storagedevice which comprises setting up a filter manager with data formatinformation and a filtering condition provided from a host; searchingand projecting data corresponding to the filtering condition frommemories in parallel by stream filters according to a control of thefilter manager to produce search and projected data; merging thesearched and projected data at the stream filters according to thecontrol of the filter manager; and providing the merged result to thehost.

The stream filtering method further comprises performing a predeterminedoperation on the searched and projected data by the stream filtersaccording to the control of the filter manager.

The stream filtering method further comprises merging results calculatedby the stream filters into one value by a merge filter according to thecontrol of the filter manager.

The stream filtering method further comprises configuring a virtualindex on the searched and projected data by the stream filters accordingto the control of the filter manager.

The stream filtering method further comprises merging the virtual indexconfigured by the stream filters by a merge filter according to acontrol of the filter manager.

The data format information supports a Relational Database ManagementSystem (RDBMS) table format.

The filtering condition comprises an operator, a field to be comparedwith data stored in the memories, and field information to be providedas a filtering condition result.

The searching and projecting data corresponding to the filteringcondition from memories in parallel is performed to produce the searchedand projected data independently with respect to the memories eachcorresponding to the stream filters.

Another embodiment may be directed to a storage device which comprises amain storage part including memories; a controller configured to controlan overall operation of the main storage part, wherein the controllercomprises a filter manager configured to store data format informationand a filtering condition provided from a host; stream filtersconfigured to search and project data stored in the memories in parallelin response to a control of the filter manager to produce searched andprojected data; and a merge filter configured to merge the searched andprojected results of the stream filters in response to the control ofthe filter manager.

Each of the stream filters comprises a selection unit selecting searcheddata corresponding to the filtering condition among the data stored in acorresponding memory according to the control of the filter manager; aprojection unit projecting projected data corresponding to the filteringcondition among the data stored in the corresponding memory according tothe control of the filter manager; and an aggregation unit combining orcalculating searched data and projected data from the selection unit andthe projection unit into a merged result according to the control of thefilter manager.

The merge filter re-calculates results from the stream filters so as tobe merged into one value, under the control of the filter manager.

Each of the stream filters configures a virtual index on the searchedand projected data of each of the stream filters under the control ofthe filter manager.

The merge filter merges the virtual index configured by the streamfilters under the control of the filter manager.

The merge filter merges the virtual index configured by the streamfilters under the control of the filter manager.

The filter manager, the stream filters, and the merge filter are formedby hardware within the controller.

The data format information and the filtering condition are freely setup by the host.

Still another embodiment may be directed to a stream filtering method ofa storage device, which comprises setting up a filter manager with dataformat information and a filtering condition provided from a host;searching and projecting data corresponding to the filtering conditionfrom memories in parallel by stream filters according to a control ofthe filter manager to produce searched and projected data; updating thesearched and projected data at the stream filters according to thecontrol of the filter manager to produce updated searched and projecteddata; and storing the updated searched and projected data in a memorycorresponding to the updated searched and projected data among thememories according to the control of the filter manager.

The searched and projected data is updated without a transfer to thehost.

Yet another embodiment may be directed to a storage device whichcomprises a flash memory, a buffer for temporarily storing buffer datagenerated during an operation, and a memory controller for controllingthe flash memory and the buffer, wherein the memory controller includesa filter manager configured to store data format information and afiltering condition provided from a host, a flash interface whichincludes stream filters configured to search and project data stored inmemory controller memories in parallel in response to a control of thefilter manager to produce searched and projected data, at least onemicroprocessor, and a host interface which includes a merge filterconfigured to merge the searched and projected data of the streamfilters in response to the control of the filter manager.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other features will become more apparent to those ofordinary skill in the art by describing in detail exemplary embodimentswith reference to the attached drawings, in which:

FIG. 1 illustrates a diagram showing a storage device according to anexemplary embodiment and a user device including the same.

FIG. 2 illustrates a diagram showing a storage controller illustrated inFIG. 1.

FIG. 3 illustrates a diagram showing a stream filter illustrated in FIG.2.

FIG. 4 illustrates a diagram for showing an operation of a parallelstream filter according to an exemplary embodiment when data stored in amain storage part is read out.

FIG. 5 illustrates a diagram showing a data format of a filter managerbeing set by a host.

FIG. 6 illustrates a diagram for showing a parallel stream filteringoperation according to a filtering condition of a filter manager beingset by a host.

FIG. 7 illustrates a diagram for showing an operation of a parallelstream filter according to an exemplary embodiment when data is writtenin a main storage part.

FIG. 8 illustrates a diagram showing a storage device according to anexemplary embodiment.

FIG. 9 illustrates a diagram showing a storage device according toanother exemplary embodiment.

FIG. 10 illustrates a diagram showing a storage device according to yetanother exemplary embodiment.

FIG. 11 illustrates a diagram showing a computing system including astorage device illustrated in FIG. 1.

DETAILED DESCRIPTION

Example embodiments will now be described more fully hereinafter withreference to the accompanying drawings; however, they may be embodied indifferent forms and should not be construed as limited to theembodiments set forth herein.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of presentembodiments. As used herein, the singular forms “a”, “an” and “the” areintended to include the plural forms as well, unless the context clearlyindicates otherwise. It will be further understood that the terms“comprises” and/or “comprising,” when used in this specification,specify the presence of stated features, integers, steps, operations,elements, and/or components, but do not preclude the presence oraddition of other features, integers, steps, operations, elements,components, and/or groups thereof. As used herein, the term “and/or”includes any and all combinations of of the associated listed items.

It will be understood that when an element or layer is referred to asbeing “on” another element or layer, it can be directly on the otherelement or layer, or intervening elements or layers may be present. Incontrast, when an element is referred to as being “directly on” anotherelement or layer, there are no intervening elements or layers present.

A solid state drive (SSD) adopting a flash memory among semiconductormemories as a main storage device will be described as a storage device.However, a storage device and a data storing method thereof may beapplied to a different-type storage device (e.g., a memory card, etc.)as well as the SSD.

FIG. 1 is a diagram showing a storage device according to an exemplaryembodiment and a user device including the same.

Referring to FIG. 1, a user device may include a host 9000 and a storagedevice 1000. The host 9000 may be configured to control the storagedevice 1000. The host 9000 may include a user device such as apersonal/portable computer, a personal digital assistant (PDA), an MP3player, etc. The host 9000 and the storage device 1000 may beinterconnected by a standardized interface such as an USB, SCSI, ESDI,SATA, SAS, PCI-express, or IDE interface. An interface manner forconnecting the host 9000 and the storage device 1000 is not limited tothis disclosure, and could be configured in a different manner.

The storage device 1000 may be formed of a solid state drive (or, asolid state disk). Hereinafter, the solid state drive will be referredto as a SSD. The storage device 1000 is formed of a SSD. But, thestorage device 1000 is not limited to this disclosure, and could beformed differently. For example, the storage device 1000 may beintegrated in one semiconductor device to form a personal computermemory card international association (PCMCIA), a compact flash (CF), asmart media card (SM, SMC), a memory stick, a multimedia card (MMC,RS-MMC, MMC-micro), an SD card (SD, miniSD, microSD, SDHC), an universalflash storage (UFS) device, etc.

The storage device 1000 may include a storage controller 120 and a mainstorage part 110. A plurality of channels CH1 to CHN may be formedbetween the storage controller 120 and the main storage part 110.

The main storage part 110 may be formed of a plurality of non-volatilememory chips, i.e., a plurality of flash memories 110_1 to 110_N. Eachof the channels CH1 to CHN may be connected in common with a pluralityof flash memories. As another example, the main storage part 110 may beformed of different-type non-volatile memory chips (e.g., PRAM, FRAM,MRAM, etc.) instead of flash memory chips. Alternatively, the mainstorage part 110 can be formed of volatile memories, i.e., DRAM or SRAM,and may have a hybrid type where two or more types of memories aremixed.

The storage controller 120 may control a read/write/erase operation ofthe main storage part 110 in response to a request from the host 9000. Aparallel stream filter 20 may be provided within the storage controller120 such that a predetermined data processing function is carried out bythe storage device 1000 instead of the host 9000. The parallel streamfilter 20 may be configured in hardware within the storage controller120. A data processing operation executed by the parallel stream filter20 is called a stream filtering operation.

The parallel stream filter 20 may make data processing in parallel via aplurality of stream filters within the storage device. Data processingresults of the plurality of stream filters may be merged effectively bya merger filter. A parallel data processing operation of the parallelstream filter 20 may be applied to an operation of writing data in themain storage part 110 as well as an operation of reading data from themain storage part 110. With a configuration of the parallel streamfilter 20, a data processing function may be executed effectively withinthe storage device 1000 instead of the host 9000. This enables theburden of the host 9000 associated with data processing to be reduced.

FIG. 2 is a diagram showing a storage controller illustrated in FIG. 1.

Referring to FIG. 2, a storage controller 120 may be an SSD controllerif a storage device 1000 is an SSD. The storage controller 120 mayinclude a host interface 150, at least one processing unit 130, a buffer140, and a parallel stream filter 20. The storage controller 120illustrated in FIG. 2 is related to an exemplary embodiment and may bechanged and modified. For example, although not shown in FIG. 2, thestorage controller 120 may further comprise a flash interface circuit,an ECC circuit for detecting and correcting errors of data read out froma main storage part 110, etc.

The host interface 150 may be configured to interface with the host9000. The processing unit 130 may be configured to control an overalloperation of the storage controller 120. In an exemplary embodiment, theprocessing unit 130 may be a commercial or custom-made microprocessor.

The buffer 140 may be general purpose memory devices which includesoftware for operating the storage device 120 and data. The buffer 140may include a cache, ROM, PROM, EPROM, EEPROM, PRAM, flash memory, SRAM,and DRAM. Further, the buffer 140 may be used to temporarily store datato be stored in or read out from the main storage part 110 and totemporarily store data processed by the parallel stream filter 20.

The parallel stream filter 20 may include a filter manager 23, a mergefilter 25, and stream filters 26. The filter manager 23 may control themerger filter 25 and the stream filter 26 based on a data format and adata process request, executed according to the data format, from thehost 9000.

In an exemplary embodiment, the stream filter 26 may be provided tocorrespond to each of a plurality of channels CH1 to CHN formed betweenthe storage controller 120 and the main storage part 110. For example,if N channels are formed between the storage controller 120 and the mainstorage part 110, N stream filters 26_1 to 26_N may be provided. In thiscase, the N stream filters 26_1 to 26_N may be implemented to have thesame configuration one another.

The N stream filters 26_1 to 26_N may perform a filtering operationindependently with respect to the respective channels CH1 to CHN, andfiltering operations of the N stream filters 26_1 to 26_N may beexecuted in parallel according to the control of the filter manager 23.In an exemplary embodiment, the N stream filters 26_1 to 26_N may beformed within a flash interface circuit which makes interface with aplurality of flash memories 110_1 to 110_N via the N channels CH1 toCHN. However, the location and configuration of the stream filter 26 maybe modified and changed, and is not limited to this disclosure. Nfiltering results obtained by the parallel processing of the N streamfilters 26_1 to 26_N may be stored in the buffer 140.

The merge filter 25 may execute a function of merging filtering resultsof the N stream filters 26_1 to 26_N temporarily stored in the buffer140. A merge operation of the merger filter 25 may be executed under thecontrol of the filter manager 23. In an exemplary embodiment, the mergefilter 25 may be implemented within a host interface circuit 150 whichmakes interface with the host 9000. However, the location andconfiguration of the merge filter 25 may be modified and changed, and isnot limited to this disclosure.

FIG. 3 is a diagram showing a stream filter illustrated in FIG. 2. InFIG. 3, there is illustrated one stream filter 26_1 of a plurality of,for example, N stream filters 26_1 to 26_N in FIG. 2. The N streamfilters 26_1 to 26_N may be formed to have the same configuration.

Referring to FIG. 3, the stream filter 26_1 may include a selection unit262, a projection unit 264, and an aggregation unit 266. The selectionunit 262 may select data corresponding to a predetermined conditionamong data stored in flash memories 110_1 according to the control ofthe filter manager 23. The projection part 264 may extract datacorresponding to a predetermined condition among data stored in flashmemories 110_1 according to the control of the filter manager 23.

Under the control of the filter manager 23, the aggregation unit 266 maycombine or calculate the selected and/or extracted results of theselection unit 262 and the projection unit 264 may convert a requiredfield of a plurality of records into one value.

As illustrated in FIG. 2, in the event that a parallel stream filter 20may include N stream filters 26_1 to 26_N each corresponding to Nchannels CH1 to CHN, N outputs may be generated in parallel from the Nstream filters 26_1 to 26_N. N outputs generated in parallel fromaggregation units 266 in the N stream filters 26_1 to 26_N may be storedin a buffer 140 temporarily. The N outputs temporarily stored in thebuffer 140 may be merged by the merge filter 25 according to the controlof the filter manager 23.

The parallel stream filter 20 may execute a stream filtering operationin which a data processing operation of a host 9000 is partiallyexecuted directly within a storage device 1000 instead of the host 9000.With the stream filtering operation, it is possible to skip an operationof transferring data in the main storage part 110 of the storage device1000 into the host 9000, a data processing operation of the host 9000,and an operation of storing a processed result provided from the host9000 in the main storage part 110 by the storage device 1000. A dataprocessing operation executed by the parallel stream filter 20 may bemade at an operation of reading data from the main storage part 110 orat an operation of writing data therein.

FIG. 4 is a diagram for describing an operation of a parallel streamfilter according to an exemplary embodiment when data stored in a mainstorage part is read out.

Referring to FIG. 4, a filter manager 23 of the parallel stream filter20 may be set with two types of information to perform a data processingoperation requested from the host 9000. The setting of the filtermanager 23 may be made under the control of the host 9000.

The first type of information of the filter manager 23 may include aformat of data stored in a storage device. For example, in case of RDBMS(Relational Database Management System), the first type of informationmeans information on a format of a table where data is stored. Suchinformation may represent the number of table columns or fields per row.A size of each column or field may be defined by such information.

FIG. 5 is a diagram showing a data format of a filter manager being setby a host.

In FIG. 5, there is illustrated an example that three fields F1 to F3are set within the filter manager 23 by a host. For example, 8-byte maybe assigned to the first field F1 as a record or tuple representing“Name”. 4-byte may be assigned to the second field F2 as a record ortuple representing “Age”, and 14-byte may be assigned to the third fieldF3 as a record or tuple representing “Telephone Number”. At this time, afield format and a field length may be set variously by the host 9000.If the filter manager 23 is set with a format of a table storing datalike a format illustrated in FIG. 5, data of the main storage part 110may be searched or stored according to the set table format.

The second type of information of the filter manager 23 may represent acondition needed to execute a filtering operation. The filteringinformation may include a field being an object to be compared amongdata stored in the main storage part 110 and field information to beprovided as a result. Herein, it is possible to freely set up the dataformat information and filtering condition by the host 9000.

For example, as illustrated in FIG. 5, to search a telephone number of aperson named “AA” within a table storing a name, an age, and a telephonenumber as a record or tuple, the host 9000 may set up the filter manager23 with a record format of a table being <8 Bytes, 4 Bytes, 14 Bytes>.And then, the host 9000 may set up the filter manager 23 with afiltering condition of <F1==“AA”, F3>. This condition represents amessage such as send an output of the third field F3 when a value of thefirst field F1 has “AA”.

After set up with the filtering condition of <F1==“AA”, F3>, the filtermanager 23 may search a telephone number corresponding to a name “AA”from N memories 110_1 to 110_N each corresponding to N channels CH1 toCHN via N stream filters 26_1 to 26_N.

FIG. 6 is a diagram for describing a parallel stream filtering operationaccording to a filtering condition of a filter manager being set by ahost.

Referring to FIGS. 4 and 6, under the control of a filter manager 23, Nstream filters 26_1 to 26_N perform a stream filtering operation inparallel to search a telephone number corresponding to a name being “AA”(refer to 10, in FIG. 6). Searched results of the N stream filters 26_1to 26_N may be stored in the buffer 140 temporarily. The merge filter 25may merge outputs of the N stream filters 26_1 to 26_N temporarilystored in the buffer 140 under the control of the filter manager 23. Amerge result of the merge filter 25 may be provided to a host 9000 via ahost interface 150.

With the stream filtering operation, it is possible to search datasatisfying a predetermined condition directly from N memories 110_1 to110_N, in which data to be searched is stored, in parallel via N streamfilters 26_1 to 26_N. Results searched in parallel by the N streamfilters 26_1 to 26_N may be merged by the merge filter 25 such that onlya desired result is finally provided to the host 9000. A parallel streamfilter 20 may search data within the storage device 1000 storing data tobe searched and provide the searched data to the host 9000 as desireddata. Thus, it is possible to reduce a burden of the host 9000 byperforming a data search operation by the storage device 1000 instead ofthe host 9000. Further, it is possible to reduce an unnecessary datatransfer between the storage device 1000 and the host 9000. Inparticular, since a plurality of stream filters 26_1 to 26_N in theparallel stream filter 20 performs stream filtering operations inparallel, a filtering speed may be improved and power consumption may beminimized.

The N stream filters 26_1 to 26_N may further provide an aggregationfunction together with the above-described selection function andprojection function for extracting a desired field from a correspondingrecord. The aggregation function may be executed by an aggregation unit266 in each of the stream filters 26_1 to 26_N. For example, each streamfilter may search a field satisfying a predetermined condition, and theaggregation unit 266 may calculate the searched fields to be convertedinto one value. With the aggregation function, it is possible to providethe number of specific records, a total of desired fields, an average ofdesired fields, etc.

For example, it is assumed that the host 9000 may need an average age ofpersons over age 30. This will be more fully described with reference toa data format illustrated in FIG. 5. First of all, the host 9000 maynotify a filter manager 23 that a record format is <8 Bytes, 4 Bytes, 14Bytes>. Then, the host 9000 may set up the filter manager 23 with afiltering condition of <F2>=30, F2, AVERAGE>. The filtering conditionmay represent “Obtain an average of the second field F2 when a value ofthe second field F2 is identical to or more than 30”.

At this time, each of the stream filters 26_1 to 26_N may provide anaverage value on data stored in a corresponding memory 111_i (i being 1to N). Accordingly, the N stream filters 26_1 to 26_N may output averagevalues on the N memories 110_1 to 110_N in parallel. The N averagevalues provided in parallel from the N stream filters 26_1 to 26_N maybe temporarily stored in a buffer 140.

The merge filter 25 may merge the N average values temporarily stored inthe buffer 140 under the control of the filter manager 23 to generate afinal average value. The final average value generated by the mergefilter 25 may be provided to the host 9000 by the host interface 150. Inthis case, basic and statistics operations for obtaining the finalaverage value may be provided to the merge filter 25.

The merge filter 25 may further provide a virtual index configuringfunction together with such a function that a final result is generatedby merging N stream filtering results provided from the N stream filters26_1 to 26_N.

The virtual index may mean a function of temporarily configuring anindex for rapidly searching specific data later. The merge filter 25 maymerge index information configured with respect to data stored inrespective memories 110_1 to 110_N each corresponding to the streamfilters 26_1 to 26_N and notify the host 9000 of final index informationon data overall stored in the storage device 1000.

For example, it is assumed that the host 9000 needs a telephone numberfrom persons below age 30. This may be accomplished as follows. First ofall, an index may be made with respect to data stored in memories 110_1to 110_N each corresponding to the stream filters 26_1 to 26_N. In thiscase, ages of persons below age 30 may be used as a key of the index(refer to 30 in FIG. 6). For this, the host 9000 may set up the filtermanager 23 with information of <F2<=30, F3, VIRTUAL INDEX, F2>. Theinformation may represent “Provide the third field F3 when a value ofthe second field F2 is identical to or less than 30” and Configure avirtual index using the second field F2 as a key. Each of the streamfilters 26_1 to 26_N may configure a virtual index using the secondfield F2 as a key according to the control of the filter manager 23.Virtual indexes configured by the stream filters 26_1 to 26_N may bemerged by the merge filter 25, so that final index information on dataoverall stored in the storage device 1000 is configured. The final indexinformation configured by the merge filter 25 may be provided to thehost 9000 by the host interface 150.

A stream filtering operation of the parallel stream filter 20 isexemplarily described under the assumption that data stored in the mainstorage part 110 is read out and provided to the host 9000. However, thestream filtering operation of the parallel stream filter 20 may beapplied to an operation of writing data in the storage device 1000 toprocess data en bloc.

FIG. 7 is a diagram for describing an operation of a parallel streamfilter according to an exemplary embodiment when data is written in amain storage part.

Referring to FIG. 7, the parallel stream filter 20 may perform a streamfiltering operation in which data stored in the main storage part 110 isdirectly processed by the parallel stream filter 20 and the processedresult is directly stored in the main storage part 110 without theintervention of the host 9000. The host 9000 may set up the filtermanager 23 with a stream filtering operation to be executed.

For example, referring to FIGS. 5 and 6, it is assumed that the host9000 wants to change a telephone number of a person named “AA”. In thiscase, the host 9000 may set up the filter manager 23 with information of<F1==“AA”, “UPDATE”>. This may represent “Update a value of the thirdfield F3 when a value of the first field F1 is “AA”.

Referring to FIGS. 6 and 7, N stream filters 26_1 to 26_N may perform astream filtering operation in parallel under the control of the filtermanager 23, respectively. That is, the N stream filters 26_1 to 26_N maysearch a telephone number of a person named “AA” to update the searchedtelephone number with a new value. In this case, values searched andupdated by the N stream filters 26_1 to 26_N may be stored in the buffer140 temporarily. The result updated by a stream filter 26_i (i being 1to N) may be stored in a corresponding memory 110_i.

With the above-described parallel stream filtering operation, search andupdate operations on a desired field may be carried out directly withinthe storage device 1000 without the intervention of the host 9000.Accordingly, it is possible to reduce the burden of the host 9000 and anunnecessary data transfer between the storage device 1000 and the host9000, by processing a data search operation of the host 9000 within thestorage device 1000.

An operation of the parallel stream filter 20 is exemplarily describedusing the RDBMS table as an example. However, it is well understood thatthe parallel stream filter 20 is applied to all field-based datastructures

FIG. 8 is a diagram showing a storage device according to an exemplaryembodiment. In FIG. 8, there is exemplarily illustrated a storage device2000 in FIG. 8 that forms a flash memory card.

Referring to FIG. 8, the storage device 2000 may include a flash memory210, a buffer 240, and a memory controller 220 for controlling the flashmemory 210 and the buffer 240. The buffer 240 may be a device whichtemporarily stores data generated during an operation of the storagedevice 2000. The buffer 240 may be implemented by DRAM or SRAM. Thememory controller 220 may be configured to control erase, read, andwrite operations of the flash memory 210.

The memory controller 220 may include at least one microprocessor 230, ahost interface 250, a flash interface 260, and a buffer controller 270.The memory controller 220 may be configured to drive firmware forcontrolling the flash memory 210. The host interface 250 may interfacewith a host via the card protocol (e.g., the MMC protocol).

The memory controller 220 may further include a parallel stream filterwhich is formed of a filter manager 23, a merge filter 25, and a streamfilter 26. In an exemplary embodiment, the merge filter 25 may beincluded in the host interface 250, and the stream filter 26 may beincluded in the flash interface 260. Further, the stream filter 26 maybe configured to have the same constitution as illustrated in FIG. 3. Ina case where the storage device 2000 includes a plurality of channels,the stream filter 26 may be provided to correspond to the plurality ofchannels, respectively.

Operations and constitutions of the filter manager 23, the merge filter25, and the stream filter 26 may be identical to those described inFIGS. 1 to 7. Accordingly, identical constituent elements may berepresented by the same reference numerals, and description thereof isthus omitted.

In accordance with a stream filtering operation of a parallel streamfilter, search and update operations on a desired field may be carriedout directly within a storage device 2000 without the intervention of ahost. Accordingly, it is possible to reduce the burden of the host andan unnecessary data transfer between the storage device 2000 and thehost, by processing a data search operation of the host within thestorage device 2000.

The storage device 2000 may be applied to a multimedia card (MMC), asecurity digital card (SD, miniSD), a memory stick, a SmartMedia card, aTransFlash card, etc.

FIG. 9 is a diagram showing a storage device according to anotherexemplary embodiment. In FIG. 9, there is exemplarily illustrated anexample that a storage device 3000 forms a moviNAND.

Referring to FIG. 9, a storage device 3000 may include a NAND flashmemory 310 and a controller 320. The NAND flash memory 310 may be formedof NAND flash memories which are stacked within one package (e.g., FBGA,Fine-pitch Ball Grid Array, etc.).

The controller 320 may include at least one controller core 330, a hostinterface 350, and a NAND interface 360. The controller core 330 may beconfigured to control an overall operation of the moviNAND 3000. In anexemplary embodiment, the host interface 350 may be configured to make aMMC interface with the host 9000. It is well understood that the MMCinterface may be changed into different interface manners. The NANDinterface 360 may provide an interface between the NAND flash memory 310and the controller 320.

In the event that the storage device 3000 forms the moviNAND, thestorage device 3000 may be supplied with power supply voltages Vcc andVccq from the host 9000. Herein, the power supply voltage Vcc (e.g., 3V)may be supplied to the NAND flash memory 310 and the NAND interface 360,and the power supply voltage Vccq (e.g., 1.8V/3V) may be supplied to thecontroller 320.

The controller 320 may further include a parallel stream filter which isformed of a filter manager 23, a merge filter 25, and a stream filter26. In an exemplary embodiment, the filter manager 23 may be included inthe host interface 350, and the stream filter 26 may be included in theflash interface 360. Further, the stream filter 26 may be configured tohave the same configuration as FIG. 3. In a case where the storagedevice 3000 includes a plurality of channels, the stream filter 26 maybe provided to correspond to the plurality of channels, respectively.

In FIG. 9, operations and constitutions of the filter manager 23, themerge filter 25, and the stream filter 26 may be identical to thosedescribed in FIGS. 1 to 7. Accordingly, identical constituent elementsmay be represented by the same reference numerals, and descriptionthereof is thus omitted.

With a stream filtering operation of a parallel stream filter, searchand update operations on a desired field may be carried out directlywithin a storage device 3000 without the intervention of a host 9000.Accordingly, it is possible to reduce the burden of the host 9000 and anunnecessary data transfer between the storage device 3000 and the host9000, by processing a data search operation of the host 9000 within thestorage device 3000.

FIG. 10 is a diagram showing a storage device according to anotherexemplary embodiment. In FIG. 10, there is exemplarily illustrated anexample that a storage device 4000 in FIG. 10 forms a solid state drive(SSD).

Referring to FIG. 10, the storage device 4000 may include a plurality offlash memories 410 and an SSD controller 420. Each of the plurality offlash memories 410 may be configured to be identical to that illustratedin FIG. 2.

The SSD controller 420 may include at least one CPU 430, a hostinterface 450, a cache buffer 440, and a flash interface 460. The hostinterface 450 may exchange data with a host in a standardized interfacemanner according to the control of the CPU 430. Herein, the standardizedinterface manner may include ATA, SATA, SAS, PATA, USB, SCSI, ESDI, IEEE1394, IDE, PCI-express, and/or a card interface.

Data provided from the host or to be sent thereto via the host interface450 may be transferred to a cache buffer 440 without passing through aCPU bus under the control of the CPU 430.

The cache buffer 440 may store data transferred between an externaldevice (e.g., a host) and the flash memories 410 temporarily. Further,the cache buffer 440 may be used to store programs to be executed by theCPU 430. The cache buffer 440 may be considered to be a type of bufferand formed of SRAM, etc.

The flash interface 460 may provide an interface between the flashmemories 410 used as a main storage part and the SSD controller 420.

The SSD controller 420 may further include a parallel stream filterwhich is formed of a filter manager 23, a merge filter 25, and a streamfilter 26. In an exemplary embodiment, the merge filter 25 may beincluded in the host interface 450, and the stream filter 26 may beincluded in the NAND interface 460. Further, the stream filter 26 may beconfigured to have the same configuration as FIG. 3. In a case where thestorage device 4000 includes a plurality of channels, the stream filter26 may be provided to correspond to the plurality of channels,respectively.

In FIG. 10, operations and constitutions of the filter manager 23, themerge filter 25, and the stream filter 26 may be identical to thosedescribed in FIGS. 1 to 7. Accordingly, identical constituent elementsmay be represented by the same reference numerals, and descriptionthereof is thus omitted.

With a stream filtering operation of a parallel stream filter, searchand update operations on a desired field may be carried out directlywithin a storage device 4000 without the intervention of a host.Accordingly, it is possible to reduce the burden of the host and anunnecessary data transfer between the storage device 4000 and the host,by processing a data search operation of the host within the storagedevice 4000.

FIG. 11 is a diagram showing a computing system including the storagedevice illustrated in FIG. 1.

Referring to FIG. 11, a computing system 5000 may include a flash memory110, a memory controller 120, a modem 5300 such as a baseband chipset, amicroprocessor 5500, and a user interface 5600.

The flash memory 110 may be a non-volatile memory device which retainsdata even at power-off. The flash memory 110 may be widely used as datastorage and code storage for retaining stored contents at power-off. Theflash memory 110 may be applied to mobile devices, e.g., cellular phone,PDA digital camera, portable gate console, and MP3P. The flash memory110 may further be applied to home applications such as HDTV, DVD,router, and GSP.

The memory controller 120 may include a parallel stream filter 20 whichperforms a data processing operation, being executed by a host, inparallel. Operations and constitutions of the parallel stream filter 20in FIG. 11 may be identical to those described in FIGS. 1 to 7. Further,the storage device 1000 illustrated in FIG. 11 may be configured to beidentical to that illustrated in FIG. 1. It is well understood that itis possible to replace the storage device 1000 in FIG. 11 with one ofthe storage devices 2000, 3000, and 4000 in FIGS. 8 to 10. Accordingly,identical constituent elements may be represented by the same referencenumerals, and description thereof is thus omitted.

The storage device 1000 in FIG. 11 may form a memory card, a memory cardsystem a solid state drive/disk, etc. In this case, the memorycontroller 120 may be configured to communicate with an external device(e.g., a host) by one of various interface protocols such as anuniversal serial bus (USB) interface, an MultiMediaCard (MMC) interface,an PCIExpress (PCI-E) interface, a serial AT Attachment (SATA)interface, a parallel ATA (PATA) interface, a Small Computer SystemInterface (SCSI), a Serial Attached SCSI (SAS), an Enhanced Small DiskInterface (ESDI), an Integrated Drive Electronics (IDE) interface, etc.

In a case where the computing system 5000 is a mobile device, thecomputing system 5000 may further include a battery 5700 for supplyingan operating voltage thereto. Although not illustrated in FIG. 11, thecomputing system 5000 may further comprise an application chipset, acamera image processor (CIS), a mobile DRAM, etc.

A flash memory and/or a memory controller according to exemplaryembodiments may be packed using various types of packages such as PoP(Package on Package), Ball grid arrays (BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB),Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack (TQFP), Small Outline (SOIC), Shrink SmallOutline Package (SSOP), Thin Small Outline (TSOP), Thin Quad Flatpack(TQFP), System In Package (SIP), Multi Chip Package (MCP), Wafer-levelFabricated Package (WFP), Wafer-Level Processed Stack Package (WSP),etc.

In an exemplary embodiment, memory cells are formed of one of variouscell structures having a charge storage layer. Cell structures having acharge storage layer include a charge trap flash structure using acharge trap layer, a stack flash structure in which arrays are stackedin a multiple layer, a source-drain free flash structure, a pin-typeflash structure, etc.

According to the embodiments described above, it is possible to processdata in parallel by a plurality of stream filters within a storagedevice and to effectively merge results processed in parallel by theplurality of stream filters. As a result, a data processing function maybe executed effectively within the storage device instead of a host.Thus, the burden of the host on data processing is reduced.

Exemplary embodiments have been disclosed herein, and although specificterms are employed, they are used and are to be interpreted in a genericand descriptive sense only and not for purpose of limitation.

What is claimed is:
 1. A stream filtering method of a storage device,the method comprising: setting up a filter manager with data formatinformation and a filtering condition provided from a host; searchingand projecting data corresponding to the filtering condition frommemories in parallel by stream filters according to a control of thefilter manager to produce searched and projected data; merging thesearched and projected data at the stream filters into a merged resultaccording to the control of the filter manager; and providing the mergedresult to the host.
 2. The stream filtering method as claimed in claim1, further comprising: performing a predetermined operation on thesearched and projected data by the stream filters according to thecontrol of the filter manager.
 3. The stream filtering method as claimedin claim 2, further comprising: merging results calculated by the streamfilters into one value by a merge filter according to the control of thefilter manager.
 4. The stream filtering method as claimed in claim 1,further comprising: configuring a virtual index on the searched andprojected data by the stream filters according to the control of thefilter manager.
 5. The stream filtering method as claimed in claim 4,further comprising: merging the virtual index configured by the streamfilters by a merge filter according to the control of the filtermanager.
 6. The stream filtering method as claimed in claim 1, whereinthe data format information supports a Relational Database ManagementSystem (RDBMS) table format.
 7. The stream filtering method as claimedin claim 1, wherein the filtering condition includes an operator, afield to be compared with data stored in the memories, and fieldinformation to be provided as a filtering condition result.
 8. Thestream filtering method as claimed in claim 1, wherein the searching andprojecting data corresponding to the filtering condition from memoriesin parallel is performed to produce the searched and projected dataindependently with respect to the memories each corresponding to thestream filters.
 9. A storage device, comprising: a main storage partincluding memories; and a controller configured to control an overalloperation of the main storage part, wherein the controller includes: afilter manager configured to store data format information and afiltering condition provided from a host; stream filters configured tosearch and project data stored in the memories in parallel in responseto a control of the filter manager to produce searched and projecteddata; and a merge filter configured to merge the searched and projecteddata of the stream filters in response to the control of the filtermanager.
 10. The storage device as claimed in claim 9, wherein each ofthe stream filters includes: a selection unit selecting searched datacorresponding to the filtering condition among the data stored in acorresponding memory according to the control of the filter manager; aprojection unit projecting projected data corresponding to the filteringcondition among the data stored in the corresponding memory according tothe control of the filter manager; and an aggregation unit combining orcalculating searched data and projected data from the selection unit andthe projection unit into a merged result according to the control of thefilter manager.
 11. The storage device as claimed in claim 10, whereinthe merge filter re-calculates results from the stream filters so as tobe merged into one value, under the control of the filter manager. 12.The storage device as claimed in claim 9, wherein each of the streamfilters configures a virtual index on the searched and projected data ofeach of the stream filters under the control of the filter manager. 13.The storage device as claimed in claim 12, wherein the merge filtermerges the virtual index configured by the stream filters under thecontrol of the filter manager.
 14. The storage device as claimed inclaim 9, wherein the filter manager, the stream filters, and the mergefilter are formed by hardware within the controller.
 15. The storagedevice as claimed in claim 9, wherein the data format information andthe filtering condition are freely set up by the host.
 16. A storagedevice, comprising: a flash memory; a buffer for temporarily storingbuffer data generated during an operation; and a memory controller forcontrolling the flash memory and the buffer, wherein the memorycontroller includes: a filter manager configured to store data formatinformation and a filtering condition provided from a host; a flashinterface which includes stream filters configured to search and projectdata stored in memory controller memories in parallel in response to acontrol of the filter manager to produce searched and projected data; atleast one microprocessor; and a host interface which includes a mergefilter configured to merge the searched and projected data of the streamfilters in response to the control of the filter manager.
 17. Thestorage device as claimed in claim 16, wherein each of the one or morestream filters includes: a selection unit selecting searched datacorresponding to the filtering condition among the data stored in acorresponding memory according to the control of the filter manager; aprojection unit projecting projected data corresponding to the filteringcondition among the data stored in the corresponding memory according tothe control of the filter manager; and an aggregation unit combining orcalculating searched data and projected data from the selection unit andthe projection unit into a merged result according to the control of thefilter manager.
 18. The storage device as claimed in claim 16, whereinthe merge filter re-calculates results from the stream filters so as tobe merged into one value, under the control of the filter manager. 19.The storage device as claimed in claim 16, wherein each of the streamfilters configures a virtual index on the searched and projected data ofeach of the stream filters under the control of the filter manager. 20.The storage device as claimed in claim 16, wherein the merge filtermerges the virtual index configured by the stream filters under thecontrol of the filter manager.